热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

专栏|解析“全闪对象存储”(三)

在上一节“对象存储的使用场景”中,我们介绍了对象存储在大规模非结构化数据存储、云存储、大数据和数据湖等场景的使用。那么,优秀对象存储产品是怎样的&#x




在上一节“对象存储的使用场景”中,我们介绍了对象存储在大规模非结构化数据存储、云存储、大数据和数据湖等场景的使用。

那么,优秀对象存储产品是怎样的?如何设计、实现?本节,我们来分析、探讨这些问题。

通过前两节的学习,我们应该了解了对象存储的特点和要素,进而可以勾画出一个比较完美的对象存储的轮廓。但实践上,很多优点是难以共存的,或者说是无法一步到位的,必须做取舍。比如高性能和低成本,一般的,性能的增高会带来成本的上升。又比如全功能和精简功能,全功能适用面广,但会带来软件bug多、难以维护的后果。所以,不同特点的对象存储产品,有不同的受众和适用范围。

以开源对象存储MinIO为例

MinIO的设计哲学是架构上极简,功能上做好兼容S3。安装、部署、使用MinIO都是非常简单的,同时MinIO在功能上兼容S3做的较好,非常适合小规模云原生应用场景。凭借这两个主要特点,MinIO的开源社区非常活跃,MinIO作为一个轻量、优秀的对象存储被广泛使用。

其实,MinIO也有明显的短板,但这并不妨碍它在小规模云原生场景下的使用。

MinIO的短板在扩展性、规模和性能的限制

图片
目前其他对象存储产品,在功能、弹性、规模、性能等方面也都有所取舍,总体上,都是规模相对大(相对分布式文件,但没做到极大规模)、成本低、性能一般。

对象存储的主要用途是大规模数据处理,从需求上,应该不限于大文件和较高延迟的场景,机器学习等要求高IOPS、低延迟的场景,对象存储也应该可以胜任。这种场景,只有新一代的高性能、全闪对象存储产品能够胜任。

下面我们一起探讨新一代高性能对象存储产品的需求和应该具备的能力

1 需求:在原有场景下扩展能力,消除短板扩展新的市场

非结构化数据存储

提升产品软件定义的灵活性

提高性能

云存储(私有云、混合云、数据湖)

提高扩展性和规模上限的同时,降低规模化成本

提高性能,满足高性能数据处理的要求

S3全兼容,具备多租户数据全生命周期管理能力
图片

2 能力

分布式环境下数据的高安全、高可靠、高可用

数据的安全性、可靠性、可用性达到云存储标准

数据量和性能的横向线性扩展

数据量、性能的弹性达到云存储和云原生标准

高性能

吞吐、IOPS、延迟等指标达到高性能数据处理(比如机器学习)标准

低成本

降低大规模数据存储总拥有成本(高密、绿色节能、提高大容量存储介质使用寿命)
图片
以上需求和能力,最核心的问题是,如何达成顶级性能,同时支持超大规模数据弹性、低成本的存储。针对核心问题,我们逐步分析设计要点

3 设计要点

达成顶级性能,必须采用全闪存储架构,降低软件栈数据流延迟

软件栈数据流(以写入为例),包括协议层处理、链路层(RPC和RDMA)、存储层处理。其中存储层处理包括数据冗余计算、资源分配、写数据、写元数据(资源元数据和对象元数据)事务,IOPS瓶颈和延迟大部分发生在存储层。

图片
要降低存储层的延迟,最关键点在于分布式元数据服务。

元数据服务必须是分布式可水平扩展的,才能支持存储产品的容量、性能的水平扩展。

无元数据服务架构,比如一致性Hash,存在两个致命缺点,在大型分布式系统中不适用。其一,没有元数据的范围查询能力,范围查询会放大到整个集群,导致在有大量对象的系统中元数据管理性能会非常差其二,集群弹性需求导致的rebalance状态非常复杂,背离了无状态Hash的初衷

回到元数据服务上。元数据服务的数据层一般要在Raft协议上实现MVCC集合的副本复制、水平Sharding。接口层要实现事务。这些事项使得实现低延迟的元数据服务难度非常高,需要对这些核心技术切实的掌握和优化。

低延迟元数据服务之外,还有另一个关键点,是全闪软件栈的计算调度

图片

全闪软件栈采用RDMA和NVMe新技术,存储层延迟大大降低,已经不是性能瓶颈,相反,未优化的多核CPU环境下的计算和调度在极高的并发下会成为性能瓶颈。全闪软件栈采用微计算流水线架构,消除多核CPU NUMA架构缓存和调度的性能阻碍,达成极低的计算延迟和极高的并发能力。

支持超大规模数据弹性存储,必须采用全分布式架构加大容量存储介质

图片

其中,带状态分布式服务集群的弹性伸缩,是核心难点。

分布式环境下数据的高安全、高可靠、高可用

当前,企业级大容量QLC_SSD已经被全闪存储软件系统应用。全闪存储软件栈要解决QLC_SSD擦写次数低的问题。如果在存储集群层面处理好了SSD的GC、写放大、磨损均衡问题,我们可以做到针对集群中所有SSD的降低写放大比例和均衡擦写次数,不但可以使用擦写次数低的QLC_SSD,还大大增加了SSD的使用寿命。

ZNS_SSD是使用大容量SSD、降低成本和功耗的标准。全闪存储软件栈要适配、支持ZNS_SSD的使用

要将大容量SSD成本做到最低,可以采用定制化的Open_Channel_SSD方案,将SSD的FTL层和纠错层放到主机端,节省了DRAM控制器,适配使用廉价的SSD颗粒,极大的降低SSD成本。

全闪存储软件栈还可以在集群资源调度上达成节能,充分利用SSD的节能状态。

高性能和低成本的矛盾,通过数据分层来缓解

热数据层采用高性能全闪软件栈和高价的高性能NVMe_SSD。

温冷数据层采用普通全闪软件栈和廉价的大容量SSD。

数据分层透明化,智能化,应用无感知。

4 设计讨论

为何提出了一个看上去完美的分布式架构,而不是以上说的取舍?

我们在介绍MinIO的时候,讨论了取舍,以架构极简和功能为主。但需求是发展的,对象存储系统的水平扩展的弹性、极高性能,已经成为当下和未来最重要的需求,可以扩展大片的市场,所以我们的重点放在最难的这两个方面上,做分布式全闪架构的企业级存储。

5 大道云行FOSS全闪分布式对象存储介绍

大道云行FOSS,是采用先进的分布式全闪架构的云存储系统,以超大规模数据长期、可靠、绿色低碳、高性能存取为目标

图片
全闪架构,超高性能,数据量、性能的水平线性扩展

毫秒级延迟

单集群,百P级空间,百G级吞吐,百万级IOPS

同城、跨地域多集群扩展

跨zone数据复制、容灾

绿色低碳

绿色节能(大部分SSD大部分时间处于低功耗状态,单片SSD<0.5w&#xff09;。

SSD使用寿命长&#xff0c;实际可用空间多(不需要7%的GC预留)。

长期可靠

存入不管&#xff0c;保证几十年以上数据可靠可用(数据静默错误保护&#xff1b;智能化的介质和数据的巡检、健康扫描、纠删恢复、过期数据迁移)。

我们能够看到&#xff0c;两个重要过程正在发生和发展

其一&#xff0c;是存储替代

当前我国大部分的非结构化数据都保存在老旧的NAS存储系统上。NAS存储系统有很多的问题&#xff1a;
图片
以对象存储为核心的云存储&#xff08;私有云&#xff0c;混合云&#xff09;&#xff0c;在容量、扩展性、安全性和可靠性、性能、统一管理、多租户、数据全生命周期管理等方面全方位超越了NAS存储&#xff0c;且总体使用成本相当。所以&#xff0c;对象存储替代NAS&#xff0c;提高各行各业应用系统的生产力&#xff0c;是必然的。当然这个过程是渐进的&#xff0c;伴随着存储网关和纳管系统的使用。

大数据系统2.0&#xff0c;提出了计算和存储分离的概念&#xff0c;主张用数据湖统一管理所有的数据处理。大数据存储正在加速从HDFS转向(S3或Swift兼容的)对象存储。

其二&#xff0c;是云存储市场的蓬勃发展

广义上的云存储&#xff0c;包括不同规模的分布式存储&#xff0c;构成边缘云、私有云、混合云、公有云。

当前&#xff0c;以数据为驱动力的数字经济正在成为我国经济发展的新引擎&#xff0c;数据即价值。但数据的价值需要通过智能化的数据分析系统得以发掘和体现。未来&#xff0c;各行各业&#xff0c;都需要符合行业特点的、智能化的数据分析系统&#xff0c;提高生产力和竞争力。

大数据的最终目的是智能化&#xff0c;而智能化需要依赖机器学习、深度学习等AI技术。所以&#xff0c;未来的数据处理平台&#xff0c;必须支持机器学习&#xff0c;相应的&#xff0c;对存储系统的高性能&#xff08;高IOPS&#xff0c;低延迟&#xff0c;文件个数多)有很高的要求。

未来&#xff0c;智能化数据处理平台必定是构建在云上的&#xff0c;而基于全闪架构的高性能、大规模、低成本的云原生存储系统&#xff0c;也会一直伴随着智能化云一起蓬勃发展&#xff0c;成为主导的存储系统

数据处理智能化&#xff0c;不仅仅是高性能集中处理&#xff0c;还包括边缘计算、冷数据存取、备份和归档、远程复制和容灾&#xff0c;等等&#xff0c;存储系统在这里有巨大的市场空间。但越往后&#xff0c;智能化程度越高&#xff0c;对云原生存储系统的要求就越高&#xff0c;门槛也越高

该怎么做&#xff1f;

前景虽然美好&#xff0c;但有效提高生产力&#xff0c;并用新的生产力去替代老的&#xff0c;是个逐步的过程。也就是说&#xff0c;有一个市场发展的时间窗口。

我们要聚焦在行业智能化数据分析的需求上&#xff0c;打造符合各行业特点的智能化数据分析平台&#xff0c;比如行业云、物联网、数据湖&#xff0c;真正有效的把数据智能化转变为生产力和竞争力&#xff0c;这样&#xff0c;我们的存储系统才拥有了高价值数据&#xff0c;体现了其卓越能力的价值。

具体的&#xff0c;就是深入参与企业、行业数据系统和物联网/云/数据湖的方案和建设&#xff0c;伴随着云&#xff08;私有云&#xff0c;边缘云)在数据处理智能化方面一起发展。

参考资料&#xff1a;

[1] AWS. 数据湖存储

https://aws.amazon.com/cn/products/storage/data-lake-storage/?nc&#61;sn&loc&#61;4

[2] Minio. WhitePaper

https://storage.oak-tree.tech/acorn/documents/minio.high-performance-s3.pdf

[3] Mikito Takada. Distributed Systems for Fun and Profit

[4] Martin Kleppmann. Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems

[5] Diego Ongaro, John Ousterhout. Raft Consensus Algorithm

https://raft.github.io/raft.pdf

往期推荐

1、专栏 | 解析“全闪对象存储”&#xff08;二&#xff09;

2、专栏 | 解析“全闪对象存储”

3、SMB2协议特性之oplock与lease&#xff08;上&#xff09;







推荐阅读
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 【Windows】实现微信双开或多开的方法及步骤详解
    本文介绍了在Windows系统下实现微信双开或多开的方法,通过安装微信电脑版、复制微信程序启动路径、修改文本文件为bat文件等步骤,实现同时登录两个或多个微信的效果。相比于使用虚拟机的方法,本方法更简单易行,适用于任何电脑,并且不会消耗过多系统资源。详细步骤和原理解释请参考本文内容。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了Composer依赖管理的重要性及使用方法。对于现代语言而言,包管理器是标配,而Composer作为PHP的包管理器,解决了PEAR的问题,并且使用简单,方便提交自己的包。文章还提到了使用Composer能够避免各种include的问题,避免命名空间冲突,并且能够方便地安装升级扩展包。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • 本文总结了初学者在使用dubbo设计架构过程中遇到的问题,并提供了相应的解决方法。问题包括传输字节流限制、分布式事务、序列化、多点部署、zk端口冲突、服务失败请求3次机制以及启动时检查。通过解决这些问题,初学者能够更好地理解和应用dubbo设计架构。 ... [详细]
  • 本文讨论了在使用Git进行版本控制时,如何提供类似CVS中自动增加版本号的功能。作者介绍了Git中的其他版本表示方式,如git describe命令,并提供了使用这些表示方式来确定文件更新情况的示例。此外,文章还介绍了启用$Id:$功能的方法,并讨论了一些开发者在使用Git时的需求和使用场景。 ... [详细]
  • ejava,刘聪dejava
    本文目录一览:1、什么是Java?2、java ... [详细]
  • 荐
                                                        应用程序负载均衡器概述
    关注公众号:AWS爱好者(iloveaws)文|沉默恶魔(禁止转载,转载请先经过作者同意)网站:www.iloveaws.cnHello大家好,欢迎来到《AWS解决方案架构师 ... [详细]
author-avatar
东北的小爷们_366
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有